home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 011 / lbl40.arc / LBLPNT.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1985-08-14  |  9.1 KB  |  198 lines

  1. 1  ' ******************************
  2. 2  ' *       LABEL MAKER 4.0      *
  3. 3  ' *         LBLPNT.BAS         *
  4. 4  ' *       AUGUST 14, 1985      *
  5. 5  ' ******************************
  6. 9  '             *****  INITIALIZE THE PROGRAM  *****
  7. 10  CLEAR 3000 : KEY OFF
  8. 20  DEF FN A$(Y)=STRING$(Y,32): DEF FN B$(LL)=STRING$(LL,"-")
  9. 30  DEFINT I-N
  10. 40  DEF SEG=0                            ' check for color monitor
  11. 50  IF (PEEK(&H410) AND &H30)=&H30 THEN CLR=0 ELSE CLR=1
  12. 60  IF CLR THEN COLOR 14,0               ' if clr=1 a color monitor is attached
  13. 70  CLS: LINECOUNT=0: I=1
  14. 80  DIM FILE$(300), COMMENTS$(10)
  15. 90  ON ERROR GOTO 6000
  16. 99  '            *****  READ IN DATA  *****
  17. 100  OPEN "NAMEDISK.ZQW" FOR INPUT AS #1
  18. 110    IF EFLAG=53 THEN EFLAG=0: PRINT TAB(28)"Disk has not been named.": PRINT: PRINT TAB(24)"Return to DOS and run LBL.BAT.": PRINT: PRINT TAB(10)"Hit <ENTER> to return to DOS.";: INPUT ZZ$: SYSTEM
  19. 120    IF EFLAG<>0 THEN GOTO 6500
  20. 130  INPUT #1,DISKNAME$, CN$, FREEBYTES, BYTESUSED, DS$, TYPEPRINTER$ ' read the DISKNAME from the disk in Default Drive
  21. 140  IF TYPEPRINTER$="EPSON" THEN KOMMENTS.PER.LABEL=8: GOTO 170
  22. 150  IF TYPEPRINTER$="OTHER" THEN KOMMENTS.PER.LABEL=4: GOTO 170
  23. 160  GOTO 6500
  24. 170  FOR K=1 TO KOMMENTS.PER.LABEL: INPUT #1,COMMENTS$(K): IF COMMENTS$(K)="" THEN GOTO 180 ELSE NEXT K
  25. 180  CLOSE 1: KOUNT=K-1: CN%=VAL(CN$): DIR%=0
  26. 190  OPEN "TEMPFILE.ZQW" FOR INPUT AS #1
  27. 200    IF EFLAG=55 THEN EFLAG=0: CLOSE: GOTO 190
  28. 210    IF EFLAG<>0 THEN GOTO 6500
  29. 220  FOR I=1 TO CN%
  30. 230    INPUT #1,FILE$(I)
  31. 240    IF MID$(FILE$(I),14,5)="<DIR>" THEN FILE$(I)=LEFT$(FILE$(I),8)+"<DIR>": DIR%=DIR%+1: GOTO 260
  32. 250    FILE$(I)=LEFT$(FILE$(I),13)
  33. 260  NEXT I: CLOSE
  34. 299  '          *****  SUBROUTINE TO PRINT LIST OF FILES TO VIDEO  *****
  35. 300  IF CLR THEN COLOR 14,1
  36. 310  CLS: GOSUB 1000
  37. 320  FOR I=1 TO CN%: PRINT FILE$(I);"   ";: NEXT I
  38. 330  PRINT: PRINT: PRINT"There are";CN%;"files on the disk."
  39. 340  PRINT: PRINT"There are";DIR%;"sub-directories on the disk.": PRINT
  40. 350  IF TYPEPRINTER$="OTHER" THEN GOTO 570
  41. 360  IF (INT(CN%/4)+KOUNT)<7 THEN PRINT "The files will fit on a small label": GOTO 380
  42. 370  BEEP: IF CLR THEN COLOR 5,1: PRINT "The files will not fit on one small label": COLOR 14,1
  43. 380  BEEP: PRINT: INPUT "Hit <ENTER> to continue"; ZZ$
  44. 399  '           *****  SUBROUTINE TO PICK SIZE OF LABELS  *****
  45. 400  IF CLR THEN COLOR 14,0                              ' int yellow on black
  46. 410  CLS
  47. 420  GOSUB 1000                                          ' print heading
  48. 430  LOCATE 5,1: X=POS(0):PRINT STRING$(79-X," ")        ' clear to end of line
  49. 440  LOCATE 5,10: BEEP: PRINT"What size labels will you be using?"
  50. 450  LOCATE 7,15: PRINT "<1> 3 1/2 x 15/16"
  51. 460  LOCATE 8,15: PRINT "<2> 4 x 1 7/16"
  52. 470  LOCATE 11,10: BEEP : INPUT "> ENTER SELECTION: "; IN$
  53. 480  LABEL.SIZE$=IN$
  54. 490  ON VAL(LABEL.SIZE$) GOTO 510, 560
  55. 500  BEEP: LOCATE 15,30: IF CLR THEN COLOR 2,0: PRINT "INVALID RESPONSE":FOR I=1 TO 1000: NEXT I: GOTO 400
  56. 510  FILES.PER.LINE=4: LINES.PER.LABEL=8: TOTAL.FILES=140: TEMP.KOUNT=7
  57. 520  IF MID$(DISKNAME$,19,1)="M" THEN AMASTER$="YES"
  58. 530  IF KOUNT>4 THEN KOUNT=4
  59. 540  DISKNAME$=LEFT$(DISKNAME$,15): IF AMASTER$="YES" THEN DISKNAME$=DISKNAME$+" M"
  60. 550  LL=57: GOTO 580
  61. 560  FILES.PER.LINE=5: LINES.PER.LABEL=15: TOTAL.FILES=260: TEMP.KOUNT=14: LL=64: GOTO 580
  62. 570  FILES.PER.LINE=5: LINES.PER.LABEL=8: TOTAL.FILES=120: TEMP.KOUNT=8: LL=64
  63. 580  IF CN%>TOTAL.FILES THEN PRINT: PRINT"You are limited to a total of";TOTAL.FILES;" files": CN%=TOTAL.FILES
  64. 599  '           *****  PRINT ON VIDEO OR PRINTER  *****
  65. 600  PRINT: BEEP : INPUT"Do you want to print on (V)ideo or the (P)rinter";VP$
  66. 610  IF VP$="V" OR VP$="v" THEN OPEN "SCRN:" FOR OUTPUT AS #2: PRINTERFLAG=0
  67. 620  IF VP$="P" OR VP$="p" THEN OPEN "LPT1:" AS #2: PRINTERFLAG=1
  68. 630  IF PRINTERFLAG=1 THEN GOSUB 2500
  69. 640  GOSUB 4000
  70. 699  '           *****  SET UP LINE OF FILE NAMES FOR LABEL  *****
  71. 700  J=1
  72. 710  LABEL$=""
  73. 720  FOR M=1 TO FILES.PER.LINE
  74. 730    IF MID$(FILE$(J),14,5)="<DIR>" THEN FILE$=LEFT$(FILE$(J),8)+"<DIR>": GOTO 750
  75. 740    FILE$=LEFT$(FILE$(J),13)
  76. 750    LABEL$=LABEL$+FILE$: IF LABEL.SIZE$="1" THEN LABEL$=LABEL$+"  "
  77. 760    J=J+1: IF J>CN% THEN GOTO 780
  78. 770  NEXT M
  79. 780  GOSUB 4000                          ' PRINT LINE OF FILE NAMES ON LABEL
  80. 790  IF LINECOUNT=LINES.PER.LABEL THEN GOSUB 5000
  81. 800  IF J>CN% THEN GOTO 820
  82. 810  GOTO 710
  83. 820  IF J>TOTAL.FILES THEN GOTO 4500
  84. 830  GOSUB 5500
  85. 899  '           *****  READ AND PRINT COMMENTS ON LABEL  *****
  86. 900  FOR N=1 TO KOUNT: LABEL$=COMMENTS$(N): GOSUB 4000: NEXT N: ICOMMENTS=1
  87. 910  IF LINECOUNT>0 THEN GOSUB 5530
  88. 920  GOSUB 5000
  89. 930  END
  90. 999  '           *****  PRINT HEADING  *****
  91. 1000  LOCATE 1,17: PRINT STRING$(10,"-")+"L A B E L   M A K E R   4.0"+STRING$(10,"-")
  92. 1010  LOCATE 3,28: PRINT"DOS 2.0  OPERATING SYSTEM": PRINT: RETURN
  93. 1499  '          *****  INITIALIZE AND SET THE PRINTER FOR TITLE  *****
  94. 1500  LPRINT CHR$(27)"@";                ' REINITIALIZE THE PRINTER
  95. 1510  LPRINT CHR$(27); CHR$(8);          ' DISABLE PAPER-END SIGNAL
  96. 1520  LPRINT CHR$(27)"3"; CHR$(34);      ' SET TO 34/216" LINE SPACING
  97. 1530  LPRINT CHR$(27)"G";                ' SET PRINTER TO DOUBLE STRIKE MODE
  98. 1540  LPRINT CHR$(27)"E";                ' SET PRINTER TO EMPHASIZED MODE
  99. 1550  LPRINT CHR$(14);                   ' SET PRINTER TO ENLARGED MODE
  100. 1560  RETURN
  101. 1999  '          *****  INITIALIZE AND SET THE PRINTER FOR FILE NAMES  *****
  102. 2000  LPRINT CHR$(27)"@";                ' REINITIALIZE THE PRINTER
  103. 2010  LPRINT CHR$(27); CHR$(8);          ' DISABLE PAPER-END SIGNAL
  104. 2020  LPRINT CHR$(27)"3"; CHR$(16);      ' SET TO 16/216" LINE SPACING
  105. 2030  LPRINT CHR$(27)"S"; CHR$(0);       ' SET TO SUPERSCRIPT MODE
  106. 2040  LPRINT CHR$(15);                   ' SET PRINTER TO CONDENSED MODE
  107. 2050  RETURN
  108. 2499  '         *****  PROMPT SUBROUTINE  *****
  109. 2500  PRINT: PRINT TAB(10)"Line up the labels with the right edge of the backing paper"
  110. 2510  PRINT TAB(20)"on 43 on the ruler."
  111. 2520  PRINT TAB(10)"If the label is lined up Hit <C> to continue or <A> to abort";: INPUT ZZ$
  112. 2530  IF ZZ$="C" OR ZZ$="c" THEN RETURN
  113. 2540  IF ZZ$="A" OR ZZ$="a" THEN GOTO 4530
  114. 2550  LOCATE Y,X: PRINT FN A$(79): LOCATE Y,X: GOTO 2520
  115. 2560  RETURN
  116. 2999  '           *****  PRINT TITLE FOR EPSON PRINTERS  *****
  117. 3000  IF PRINTERFLAG=1 THEN GOSUB 1500   ' SET PRINTER FOR TITLE
  118. 3010  PRINT: PRINT #2, DISKNAME$         ' PRINT DISK NAME
  119. 3020  LINECOUNT=LINECOUNT+1
  120. 3030  IF PRINTERFLAG=1 THEN GOSUB 2000
  121. 3040  LABEL$=FN B$(LL)                   ' SET TO PRINT A LINE ACROSS THE LABEL
  122. 3050  RETURN
  123. 3499  '          *****  SET PRINTER AND PRINT TITLE FOR OTHER PRINTERS *****
  124. 3500  IF PRINTERFLAG=0 THEN GOTO 3580
  125. 3510  LPRINT CHR$(18);: LPRINT CHR$(20);         ' CANCEL COND & ENL PRINT MODE
  126. 3520  LPRINT CHR$(14);                           ' SET PRINTER TO ENLARGED MODE
  127. 3530  WIDTH #2,255: PRINT #2, DISKNAME$          ' PRINT DISK NAME TO LABEL
  128. 3540  WIDTH #2,80
  129. 3550  LINECOUNT=LINECOUNT+1
  130. 3560  LPRINT CHR$(20);                           ' CANCEL ENLARGED MODE
  131. 3570  LPRINT CHR$(15);                           ' SET PRINTER TO CONDENSED MODE
  132. 3580  LABEL$=STRING$(64,"_")
  133. 3590  IF PRINTERFLAG=1 THEN RETURN ELSE PRINT #2, DISKNAME$;: RETURN
  134. 3999  '         *****  PRINT LINE  *****
  135. 4000  IF LINECOUNT<>0 THEN GOTO 4070
  136. 4010  IF J>CN% THEN IF KOUNT=0 THEN ICOMMENTS=1
  137. 4020  IF J>CN% THEN IF ICOMMENTS=1 THEN RETURN
  138. 4030  IF JLABEL =0 THEN GOTO 4050 ELSE IF JLABEL<4 AND PRINTERFLAG=0 THEN PRINT: INPUT"Hit <ENTER> to continue";ZZ$: PRINT
  139. 4040  IF JLABEL>=4 THEN GOTO 4500
  140. 4050  IF TYPEPRINTER$="EPSON" THEN GOSUB 3000 : JLABEL=JLABEL+1
  141. 4060  IF TYPEPRINTER$="OTHER" THEN GOSUB 3500 : JLABEL=JLABEL+1: ' IF PRINTERFLAG=0 THEN PRINT STRING$(64,"_");
  142. 4070  PRINT #2, LABEL$
  143. 4080  LINECOUNT=LINECOUNT+1
  144. 4090  IF LINECOUNT=LINES.PER.LABEL THEN RETURN
  145. 4100  RETURN
  146. 4499  '          *****  END PROGRAM OR PRINT MORE LABELS  *****
  147. 4500  CLOSE 2: PRINT: INPUT"DO YOU WANT TO PRINT ANOTHER LABEL OF THIS DISK"; IN$
  148. 4510  IF IN$="Y" OR IN$="y" THEN LINECOUNT=0: J=1: JLABEL=0: ICOMMENTS=0: GOTO 600
  149. 4520  IF IN$="N" OR IN$="n" THEN GOTO 4530 ELSE GOTO 4500
  150. 4530  IF PRINTERFLAG=1 THEN LPRINT CHR$(27)"@";: SYSTEM ELSE SYSTEM
  151. 4999  '          *****  NEW PAGE SUBROUTINE  *****
  152. 5000  IF TYPEPRINTER$="EPSON" THEN PRINT #2, FN B$(LL)
  153. 5010  IF LABEL.SIZE$="1" THEN PRINT #2, DATE$;"   ";CN$;" FILES";"     BYTES:";BYTESUSED;"USED  ";;FREEBYTES;"FREE": JLABEL=JLABEL+1: GOTO 5030
  154. 5020  PRINT #2, DATE$;" ";CN$;" FILES";"  FORMAT ";DS$;"  BYTES:";BYTESUSED;"USED  ";;FREEBYTES;"FREE": JLABEL=JLABEL+1
  155. 5030  IF PRINTERFLAG=0 THEN GOTO 5060
  156. 5040  IF TYPEPRINTER$="EPSON" THEN LPRINT CHR$(27)"3";CHR$(18)
  157. 5050  LPRINT: IF LABEL.SIZE$="1" THEN LPRINT CHR$(27)"3";CHR$(3)
  158. 5060  LINECOUNT=0: GOSUB 4000
  159. 5070  IF J>CN% THEN IF ICOMMENTS=1 THEN GOTO 4500 ELSE IF J>CN% GOTO 900
  160. 5080  RETURN
  161. 5499  '          *****  CONDITIONAL PAGE SUBROUTINE  *****
  162. 5500  IF TEMP.KOUNT-LINECOUNT<KOUNT THEN GOSUB 5530 ELSE LABEL$=FN B$(LL): GOSUB 4000: GOTO 5520
  163. 5510  GOSUB 5000: GOSUB 4000
  164. 5520  RETURN
  165. 5530  BLANKS=LINES.PER.LABEL-LINECOUNT
  166. 5540  FOR I=1 TO BLANKS
  167. 5550    LABEL$=""
  168. 5560    GOSUB 4000
  169. 5570  NEXT I
  170. 5580  RETURN
  171. 5999  '          *****  generic error handler  *****
  172. 6000  EFLAG=ERR:ELINE=ERL:RESUME NEXT
  173. 6499  '          *****  fatal error handler  *****
  174. 6500  PRINT"fatal error ";EFLAG;" occurred at line ";ELINE
  175. 6510  STOP
  176. 6999  '          *****  MENU OF GOTO'S AND GOSUB'S  *****
  177. 7000  GOTO 10                            ' initialize the program
  178. 7010  GOTO 100                           ' read in the data
  179. 7020  GOTO 300                           ' print files to video
  180. 7030  GOTO 400                           ' pick size of labels
  181. 7040  GOTO 600                           ' print on screen or printer
  182. 7050  GOTO 700                           ' set up line of filenames
  183. 7060  GOTO 900                           ' read and print comments
  184. 7070  GOSUB 1000                         ' print heading on screen
  185. 7080  GOSUB 1500                         ' set printer for title
  186. 7090  GOSUB 2000                         ' set printer for file names
  187. 7100  GOSUB 2500                         ' prompt subroutine for labels
  188. 7110  GOSUB 3000                         ' print title for Epson printer
  189. 7120  GOSUB 3500                         ' print title for other printers
  190. 7130  GOSUB 4000                         ' print line or files on label
  191. 7140  GOSUB 4500                         ' ask about more labels
  192. 7150  GOSUB 5000                         ' new page subroutine
  193. 7160  GOSUB 5500                         ' conditional page subroutine
  194. 7170  GOSUB 6000                         ' error subroutine
  195. 7180  GOSUB 6500                         ' fatal error subroutine
  196. 7190  GOSUB 7000                         ' routine library
  197. 7200  '          *****  LAST LINE  *****
  198.